/*
 * @lc app=leetcode.cn id=12 lang=golang
 * @lcpr version=30118
 *
 * [12] 整数转罗马数字
 */

// @lcpr-template-start

// @lcpr-template-end
// @lc code=start
func intToRoman(num int) string {
	m := map[int]string{
		1:    "I",
		4:    "IV",
		5:    "V",
		9:    "IX",
		10:   "X",
		40:   "XL",
		50:   "L",
		90:   "XC",
		100:  "C",
		400:  "CD",
		500:  "D",
		900:  "CM",
		1000: "M",
	}

	res := ""

	for num >= 1000 {
		res += m[1000]
		num -= 1000
	}

	for num >= 100 {
		if num >= 900 {
			res += m[900]
			num -= 900
		} else if num >= 500 {
			res += m[500]
			num -= 500
		} else if num >= 400 {
			res += m[400]
			num -= 400
		} else {
			res += m[100]
			num -= 100
		}
	}

	for num >= 10 {
		if num >= 90 {
			res += m[90]
			num -= 90
		} else if num >= 50 {
			res += m[50]
			num -= 50
		} else if num >= 40 {
			res += m[40]
			num -= 40
		} else {
			res += m[10]
			num -= 10
		}
	}

	for num != 0 {
		if num >= 9 {
			res += m[9]
			num -= 9
		} else if num >= 5 {
			res += m[5]
			num -= 5
		} else if num >= 4 {
			res += m[4]
			num -= 4
		} else {
			res += m[1]
			num -= 1
		}
	}

	return res
}

// @lc code=end

/*
// @lcpr case=start
// 3\n
// @lcpr case=end

// @lcpr case=start
// 4\n
// @lcpr case=end

// @lcpr case=start
// 9\n
// @lcpr case=end

// @lcpr case=start
// 58\n
// @lcpr case=end

// @lcpr case=start
// 1994\n
// @lcpr case=end

*/

